#include "XmlInfoIdentifiant.hpp"

#include <QtCore/QDebug>

#include <iostream>

using namespace std;

QString recupereInformation( const QHash< QString, QString >* infos,
			     const char* quoi )
{
  return (*infos)[ QString::fromUtf8( quoi ) ];
}

XmlInfoIdentifiant
XmlInfoIdentifiant::creeInstance( const QString& nomFichier,
				  const QHash< QString, QString >* infos )
{
  QString idStr( recupereInformation( infos, "id" ) );

  bool conversionOK( true );

  XmlInfoIdentifiant retour( nomFichier, idStr . toUInt( &conversionOK ) );

  if ( ! conversionOK )
    {
      cerr << "Impossible de lire la valeur du champ 'id' : "
	   << idStr . toUtf8() . constData() << endl;
      return XmlInfoIdentifiant();
    }

  return retour;
}

XmlInfoIdentifiant::XmlInfoIdentifiant()
  : BaseXmlInfo( "" ), Identification( -1u )
{}

XmlInfoIdentifiant::XmlInfoIdentifiant( const QString& nomFichier,
                                        const unsigned& id )
  : BaseXmlInfo( nomFichier ), Identification( id )
{}

XmlInfoIdentifiant::XmlInfoIdentifiant( const XmlInfoIdentifiant& identifiant )
  : BaseXmlInfo( identifiant ), Identification( identifiant.identification() )
{}

XmlInfoIdentifiant::~XmlInfoIdentifiant()
{}

XmlInfoIdentifiant& XmlInfoIdentifiant::operator=( const XmlInfoIdentifiant& identifiant )
{
  if ( &identifiant != this )
    {
      this -> BaseXmlInfo::operator=( identifiant );

      Identification = identifiant.identification();
    }

  return *this;
}

void XmlInfoIdentifiant::afficheInstance() const
{
  qDebug() << QObject::trUtf8( "N° identification %1." ).arg( identification() );
}

const unsigned& XmlInfoIdentifiant::identification() const
{
  return Identification;
}

void XmlInfoIdentifiant::setIdentification( const unsigned& id )
{
  Identification = id;
}
